home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / ien / ien-144 < prev    next >
Text File  |  1988-12-01  |  41KB  |  1,231 lines

  1. M.I.T. Laboratory for Computer Science                           IEN 144
  2.                                                           March 11, 1980
  3.  
  4.  
  5. Source Routing for Campus-Wide Internet Transport
  6.  
  7. by Jerome H. Saltzer
  8.  
  9.  
  10. This note proposes that for the internet addressing layer of a
  11.  
  12. campus-wide local area network, the source routing mechanism suggested
  13.  
  14. by Farber and Vittal [1] and discussed by Sunshine[2] may have several
  15.  
  16. advantages over hop-by-hop routing schemes based on universal or
  17.  
  18. hierarchical addresses.  The campus environment, as defined and
  19.  
  20. discussed in local network note 21, requires many subnetworks connected
  21.  
  22. by gateways, and it has a variety of other special properties of
  23.  
  24. administration. The primary advantage of source routing in this
  25.  
  26. environment is simplicity of implementation of the gateways that
  27.  
  28. interconnect subnetworks with consequent improvement in cost,
  29.  
  30. maintenance effort, recovery time, ease of trouble location, and overall
  31.  
  32. management effort.  Secondary advantages of source routing when applied
  33.  
  34. to the campus environment include:  1) a clearer separation of physical
  35.  
  36. addressing from logical naming mechanisms in protocol design, 2)
  37.  
  38. elimination of stability, oscillation, and packet looping
  39.  
  40. considerations, 3) ability for a source to control precisely a route so
  41.  
  42. as to optimize a particular service goal (e.g., response time,
  43.  
  44. reliability, bandwidth, usage policy, or privacy), 4) deferment to a
  45.  
  46. higher protocol level of the detailed design of the
  47.  
  48. fragmentation/reassembly strategy required to pass through intermediate
  49.  
  50. networks with small maximum packet sizes, and finally, 5) the ability to
  51.  
  52. accommodate both official and unofficial gateways between subnetworks.
  53.  
  54.  
  55. Two disadvantages of source routing are:  1) that the route used will
  56.  
  57. tend to be relatively static and therefore cannot optimize use of
  58.                                                                         
  59.                                    2
  60.  
  61.  
  62. communication facilities as well as the potentially more dynamic
  63.  
  64. hop-by-hop route selection system, and 2) route selection must be
  65.  
  66. accomplished somehow, and sine the mechanism to do this selection is not
  67.  
  68. specified by this protocol level, some additional mechanism must be
  69.  
  70. designed to provide this function. The argument made here is that the
  71.  
  72. first disadvantage is not serious in an environment such as a campus, in
  73.  
  74. which the los cost of high bandwidth communication can make optimization
  75.  
  76. less important.  The second disadvantage may be less serious than it
  77.  
  78. appears when one considers that a higher-level name resolution service
  79.  
  80. is required in any case, and that service cal also provide route
  81.  
  82. selection service.  In fact, it may be possible to turn this need into
  83.  
  84. an advantage, since there can be more than one such route selection
  85.  
  86. service, one of which is based on simple global or hierarchical network
  87.  
  88. names, while another, perhaps experimental or research service, provides
  89.  
  90. an elaborate interactive directory search facility or a private route
  91.  
  92. pattern.
  93.  
  94.  
  95. How Source Routing Works
  96.  
  97.  
  98. Source routing among a collection of subnetworks is a mechanism that
  99.  
  100. comes into play at the next-to-bottom layer of protocol, sometimes
  101.  
  102. called the "internet" layer.  Figure one illustrates this two-layer
  103.  
  104. arrangement.  The bottom layer, which we may call the "local transport"
  105.  
  106. layer, is a protocol for delivery of a packet within a local subnetwork
  107.  
  108. such as a single ETHERNET, CHAOSNET, of L.C.S. Ringnet.  Routing within
  109.  
  110. the local transport protocol is usually accomplished by physically
  111.  
  112. broadcasting the packet to all nodes on one subnetwork; any node that
  113.                                                                         
  114.                                    3
  115.  
  116.  
  117. recognizes its own local transport address at the front of the packet
  118.  
  119. will receive it.
  120.  
  121.  
  122.      local transport                internet transport            
  123.      protocol                       protocol                      
  124.                                                                   
  125.      +---------+  ---                                             
  126.      |         |     \                                            
  127.      +---------+      |                                           
  128.      |  local  |      |  local                                    
  129.      |transport|       > transport                                
  130.      | address |      |  packet                                   
  131.      +---------+      |  header                                   
  132.      |         |     /                                            
  133.      +---------+  ---    ------->   +---------+  ---              
  134.      |         |     \              |         |     \             
  135.      |         |      |             +---------+      |            
  136.      |         |      |             | internet|      |  internet  
  137.      |         |      |             |transport|       > transport 
  138.      |         |      |             | address |      |  packet    
  139.      |         |      |  local      +---------+      |  header    
  140.      |         |       > transport  |         |     /             
  141.      |         |      |  packet     +---------+  ---              
  142.      |         |      |  contents   |         |     \             
  143.      |         |      |             |         |      |  internet  
  144.      |         |      |             |         |       > transport 
  145.      |         |      |             |         |      |  packet    
  146.      |         |     /              |         |     /   contents  
  147.      +---------+  ---    ------->   +---------+  ---              
  148.  
  149.  
  150. The higher level protocols carried in the internet transport pactet
  151. contents take care of reliability control, FIFO byte streams,
  152. source/sink flow control, file transfer, remote login, etc.
  153.  
  154.  
  155.              Relationship between local transport protocol,
  156.                       internet transport protocol,
  157.                    and other communication protocols.
  158.  
  159.  
  160.                                Figure 1.
  161.  
  162.  
  163. The next-to-bottom, internet layer is a protocol for delivery of a
  164.  
  165. packet between any pair of nodes on the campus.  One starts a packet on
  166.  
  167. its way by placing the address of a gateway in the local transport
  168.  
  169. address field, and what may be called the "internet name" of the target
  170.                                                                         
  171.                                    4
  172.  
  173.  
  174. node in the internet name field.  The local transport medium carries the
  175.  
  176. packet to the gateway, which examines the internet name field to
  177.  
  178. determine what local transport address to use to get to the next
  179.  
  180. gateway.  In turn, the internet name field is again interpreted by
  181.  
  182. successive network gateways to determine which local transport address
  183.  
  184. should be used for the next step of this packet's journey.
  185.  
  186.  
  187. There have been suggested several alternatives for the interpretation of
  188.  
  189. internet names.  Three of these are:
  190.  
  191.  
  192. 1)   Unstructured unique identifier.  Every node on the campus-wide net
  193.  
  194.      has as its internet name a permanent unique identifier. Each
  195.  
  196.      gateway has a set of tables or other rules that allow it to
  197.  
  198.      determine the appropriate next step in the route to every possible
  199.  
  200.      named node.  (Thus this approach is sometimes called "step-by-step"
  201.  
  202.      or "hop-by-hop" routing.)  In its most general form, the unique
  203.  
  204.      identifier may be interpreted either as the name of the node or as
  205.  
  206.      the name of the point on the network to which the node is attached,
  207.  
  208.      depending on the network's convention on what happens to the name
  209.  
  210.      if a node is disconnected and reattached to a different place.
  211.  
  212.  
  213. 2)   Hierarchical identifier.  In this alternate form of hop-by-hop
  214.  
  215.      routing, the internet name of each node is a multi-part field.  For
  216.  
  217.      example, a two-part hierarchical identifier might consist of an
  218.  
  219.      identifier of the subnetwork to which the node is attached and a
  220.  
  221.      node number (usually the local transport address) of the node on
  222.  
  223.      that subnet.  For this kind of internet name, each gateway has a
  224.  
  225.      set of tables or rules that allow it to determine the appropriate
  226.  
  227.      next step in the route to every possible named subnetwork.  Since
  228.                                                                         
  229.                                    5
  230.  
  231.  
  232.      there are many fewer subnetworks than nodes, these tables should be
  233.  
  234.      much smaller than in the case of the unstructured unique
  235.  
  236.      identifier.  Reduction in table size is the chief attraction of the
  237.  
  238.      hierarchical identifier, and the argument can be extended to
  239.  
  240.      identifiers of more than two parts, network groups, and still
  241.  
  242.      smaller tables. Because the hierarchical identifier contains
  243.  
  244.      components that are names of parts of the network, this kind of
  245.  
  246.      network name is almost always thought of as naming the network
  247.  
  248.      attachment point, rather the node that is attached to it.
  249.  
  250.  
  251. 3)   Source route.  The internet transport layer contains, instead of a
  252.  
  253.      network name, a variable-length string of local transport
  254.  
  255.      addresses, with the property that each gateway merely takes the
  256.  
  257.      next local transport address from the string, moves the address to
  258.  
  259.      the local transport protocol address field, and sends the packet on
  260.  
  261.      its way.  With this approach, a gateway needs no knowledge of
  262.  
  263.      network topology, so the tables required for hop-by-hop routing
  264.  
  265.      vanish.  A source route unquestionably identifies a network
  266.  
  267.      attachment point, quite independently of what node is attached to
  268.  
  269.      that point. Any attempt to make an interpretation that a source
  270.  
  271.      route identifies a node rather than an attachment point would be
  272.  
  273.      strained at best.
  274.  
  275.  
  276. Note that if the network is arranged as a two-level hierarchy, with a
  277.  
  278. single "supernet" acting as the only communication path among all the
  279.  
  280. remaining subnetworks, then the two-part hierarchical identifier taken
  281.  
  282. together with the local address of the nearest gateway to the supernet
  283.  
  284. is an example of a source route and the gateways can become very simple.
  285.                                                                         
  286.                                    6
  287.  
  288.  
  289. However, the hierarchical identifier can be used even if the network
  290.  
  291. topology is not hierarchical, by providing an appropriate routing
  292.  
  293. algorithm in the gateways.  In that case, only the final part of the
  294.  
  295. route; even it might actually be interpreted or mapped by the final
  296.  
  297. gateway.
  298.  
  299.  
  300. Note also, that it is common for a single node to have several
  301.  
  302. activities underway at once.  For example, a time-sharing system may
  303.  
  304. have many logged-in users, several of which are using the network for
  305.  
  306. communication between their terminal and the time-sharing system.  The
  307.  
  308. receiving network software in the time-sharing system then finds that it
  309.  
  310. is acting as a kind of gateway, between the campus network on the one
  311.  
  312. hand and the array of activities inside the node on the other.  As a
  313.  
  314. result it is commonly proposed that the internet name not identify a
  315.  
  316. node but rather a particular activity within that node.  This proposal
  317.  
  318. usually takes the form of an additional field in a hierarchical internet
  319.  
  320. name, known as a "socket number" or "link". There is a controversy over
  321.  
  322. what level of protocol should recognize this socket number, and how big
  323.  
  324. it should be.  For our purpose, it is sufficient to observe that the
  325.  
  326. socket number is a kind of route for use by the receiving node.
  327.  
  328.  
  329. The mechanics of operation of a source-routing gateway as a packet
  330.  
  331. passes through are quite simple; this simplicity is the chief attraction
  332.  
  333. of source routing.  There are several alternative detailed approaches;
  334.  
  335. to permit explicit discussion one implementation will be described here.
  336.  
  337. [This implementation is only a slight variation of the one proposed by
  338.  
  339. Farber and Vittal.]  This implementation dynamically constructs a
  340.  
  341. reverse route.  It works as follows:
  342.                                                                         
  343.                                    7
  344.  
  345.  
  346. 1)   The internet source route field is structured as shown in figure
  347.  
  348.      two, with two one-byte numerical fields and a variable (but
  349.  
  350.      constant for the lifetime of the packet) number of bytes of route.
  351.  
  352.      Each local transport address uses an integral number of bytes,
  353.  
  354.      typically one or two.  The first count remains constant for the
  355.  
  356.      lifetime of the packet; the second is updated at each gateway.
  357.  
  358.  
  359. 2)   A gateway receives a packet using the local transport protocol of
  360.  
  361.      one network (call it network A) and wants to sent it out on a
  362.  
  363.      second network (call it network B).  For the moment, assume that a
  364.  
  365.      gateway interconnects exactly two nets; generalization for a
  366.  
  367.      multinet gateway involves a simple conceptual extension described
  368.  
  369.      later.
  370.  
  371.  
  372. 3)   The gateway parses the internet source route field using the "start
  373.  
  374.      of next local address" count to obtain the next step of the route.
  375.  
  376.      (We presume that the gateway is endowed with the knowledge of how
  377.  
  378.      many bytes of route are required by network B.)  It extracts the
  379.  
  380.      appropriate bytes and places them in the local transport address
  381.  
  382.      field for network B. Then it replaces those bytes of the internet
  383.  
  384.      source route with its own local transport address on network B,
  385.  
  386.      thus contributing its part of the reverse route.  Finally, it
  387.  
  388.      increments the "start of next address" field by the number of bytes
  389.  
  390.      it extracted from the route, and it invokes the local transport
  391.  
  392.      level to send the packet out on network B.  (Note that this reverse
  393.  
  394.      route construction strategy assumes that all paths are
  395.  
  396.      bi-directional and that all local transport addresses on any single
  397.  
  398.      network are of the same size.)
  399.  
  400.                                    8
  401.  
  402.  
  403.                           +------------------+
  404.                           |                  |
  405.                           | route byte count |
  406.                           |                  |
  407.                           +------------------+
  408.                           | start of         |
  409.                           |    next local    |
  410.                           |          address |
  411.                           +------------------+
  412.                           |                  |
  413.                           | local address 1  |
  414.                           |                  |
  415.                           | - - - - - - - -  |
  416.                           |                  |
  417.                           | local address 2  |
  418.                           |                  |
  419.                           | - - - - - - - -  |
  420.                           |                  |
  421.                           | local address 3  |
  422.                           |                  |
  423.                           | - - - - - - - -  |
  424.                           |                  |
  425.                           |                  |
  426.                           |                  |
  427.                           |                  |
  428.                           |                  |
  429.                           |-----------/      |
  430.                                      /       |
  431.                           |-------/ /--------|
  432.                                 |      /
  433.                           |     /------------|
  434.                           |                  |
  435.                           |                  |
  436.                           | - - - - - - - -  |
  437.                           |                  |
  438.                           | local address n  |
  439.                           |                  |
  440.                           +------------------+
  441.  
  442.  
  443.           Possible implementation of an internet source route
  444.  
  445.  
  446.                                Figure 2.
  447.  
  448.  
  449. 4)   If a gateway interconnects three or more subnetworks, it simply
  450.  
  451.      behaves as though it is itself a subnetwork with three or more
  452.  
  453.      gateways to other subnetworks.  The next byte of route is
  454.                                                                         
  455.                                    9
  456.  
  457.  
  458.      interpreted as a local address on this hypothetical subnetwork.
  459.  
  460.      The reverse route is constructed as usual.
  461.  
  462.  
  463. The operation described above is repeated at every gateway, and may also
  464.  
  465. be repeated one or more times inside the target node to dispatch the
  466.  
  467. packet to the correct activity within that node.  Similarly, when a
  468.  
  469. packet originates, it may go through one or more route selection steps
  470.  
  471. before it actually is placed on the first subnetwork.  [From a viewpoint
  472.  
  473. of telephone terminology, a source route system is a kind of
  474.  
  475. electronically implemented step-by-step switch, with each subnetwork,
  476.  
  477. multi- mailed gateway, as multi-activity host acting as a multi-position
  478.  
  479. switch.  However, because it is electronically implemented and thus not
  480.  
  481. restricted to ten-position mechanical switches, this step-by-step switch
  482.  
  483. does not have the limitations of the corresponding telephone
  484.  
  485. technology.]
  486.  
  487.  
  488. Where Routes Come From
  489.  
  490.  
  491. For source routing to work, the source of a message must somehow know
  492.  
  493. what route to place in the internet header of a packet before it
  494.  
  495. launches the packet into the internet environment.  Thus requirement
  496.  
  497. superficially implies that every source of packets be very
  498.  
  499. knowledgeable, which sounds like a terrible burden to small nodes--every
  500.  
  501. node on the network would have to be able to create or deduce suitable
  502.  
  503. routes.  In fact, that implication is unwarranted--all that is really
  504.  
  505. required is that every source of messages know of a place in the network
  506.  
  507. to ask to obtain routes.  Once a source has learned of a suitable route
  508.  
  509. to a particular target, it can encache that fact and reuse it as often
  510.                                                                         
  511.                                    10
  512.  
  513.  
  514. and as long as it wants--until the route fails to work or there is a
  515.  
  516. reason for it to believe that a better route exists.
  517.  
  518.  
  519. The most general form of route selection would come by providing one (or
  520.  
  521. more, for reliability, quick response, or administrative convenience)
  522.  
  523. routing server in the network.   A routing server is a specialized node
  524.  
  525. whose function is to maintain an internal representation of the topology
  526.  
  527. of network interconnection (along with any useful class-of-service
  528.  
  529. information about various subnetworks and gateways) and also to act as a
  530.  
  531. name resolver. The desired target must, of course, have some name,
  532.  
  533. perhaps the unstructured unique identifier or hierarchical identifier
  534.  
  535. earlier suggested as an alternative internet name.  The routing server
  536.  
  537. then implements a map from internet names to routes.
  538.  
  539.  
  540. There are two independent dimensions along which this routing server may
  541.  
  542. be more or less sophisticated:  in its name-resolution abilities, and in
  543.  
  544. its route-choosing abilities.  To begin with, let us assume a particular
  545.  
  546. fixed, fairly simple name resolution scheme--say a hierarchical
  547.  
  548. identifier--with the understanding that this choice has little or no
  549.  
  550. bearing on routing sophistication. The routing choice mechanism, then,
  551.  
  552. can range from a simple fixed table of routes from all possible sources
  553.  
  554. to all possible targets (perhaps cleverly compressed with knowledge of
  555.  
  556. the actual net topology) to a dynamic mechanism based on frequent
  557.  
  558. exchanges of traffic statistics with gateways and other routing servers
  559.  
  560. throughout the network.
  561.  
  562.  
  563. Thus, to get started, a node that wants to originate messages needs to
  564.  
  565. know one route:  a route that can be used to send a request to a routing
  566.  
  567. server to obtain other routes.  It would be possible, though poor
  568.                                                                         
  569.                                    11
  570.  
  571.  
  572. practice, to embed this "route to the nearest routing server" in the
  573.  
  574. software of every node; a more general and flexible approach would be
  575.  
  576. for a newly-arrived node to use either a broadcast or a breath-of-life
  577.  
  578. strategy to discover this one route.  In the broadcast strategy, a node
  579.  
  580. broadcasts on its local transport network a request for the "route to
  581.  
  582. the nearest routing server".  For this particular broadcast route
  583.  
  584. request, at least one gateway on every subnetwork is prepared to act as
  585.  
  586. a rudimentary routing server.  In the breath-of-life strategy each
  587.  
  588. gateway periodically (say once every ten seconds) broadcasts over its
  589.  
  590. local subnetwork a packet containing the route to the nearest routing
  591.  
  592. server. A newly-operating node waits for the next breath-of-life packet
  593.  
  594. before it can request its first route.
  595.  
  596.  
  597. Having found a route to a target node, if that node carries on more than
  598.  
  599. one activity it may be necessary to hold a further negotiation with the
  600.  
  601. target to learn how the target wants the source to identify the
  602.  
  603. particular activity in which it is interested at the target.  This
  604.  
  605. negotiation probably takes place by sending a rendezvous packet to the
  606.  
  607. host and receiving in return a packet that contains some extra routing
  608.  
  609. steps to be appended to the route originally obtained from the routing
  610.  
  611. server.  (Note that this protocol step is just the source-routing
  612.  
  613. variation on a negotiation that takes place in every such protocol; it
  614.  
  615. is not an extra step introduced by source routing.)
  616.  
  617.  
  618. Separation of Routing and Naming
  619.  
  620.  
  621. The main difference between source routing and its alternatives is that
  622.  
  623. the responsibilities both of route choice and of name resolution are
  624.  
  625. moved from the internet gateways to some other agent.  In turn, this
  626.                                                                         
  627.                                    12
  628.  
  629.  
  630. responsibility change allows the internet transport protocol to be
  631.  
  632. defined and the gateways to be implemented without freezing a particular
  633.  
  634. form of network-wide naming.  A commitment to a particular form of
  635.  
  636. network-wide name is made in the design of the name resolution part of a
  637.  
  638. routing server, and since it doesn't matter to a gateway where a route
  639.  
  640. comes from (the gateway cares only that the next step works,) there can
  641.  
  642. be more than one kind of name resolution going on at the same time,
  643.  
  644. perhaps implemented by different routing servers.  Practically, one
  645.  
  646. would expect that there might be one centrally administered and
  647.  
  648. widely-used naming method implemented by standard routing servers, and
  649.  
  650. in addition some experimental or special-purpose routing servers
  651.  
  652. developed for special applications or to experiment, for example, with
  653.  
  654. interactive resolution of catalogued servicer names, or multi-casting
  655.  
  656. protocols.  These latter ideas, while likely interest for the future,
  657.  
  658. seem inappropriate to embed now in the internet transport protocol layer
  659.  
  660. on grounds of inexperience. But they can be tried in the environment of
  661.  
  662. a source-routing internet transport strategy without disruption and
  663.  
  664. without change to the gateways.  It is even possible for one routing
  665.  
  666. server to have a different view of the extent of the network from
  667.  
  668. others. Overlapping virtual networks are thus implementable with this
  669.  
  670. strategy.  This feature might be used, for example, to segregate "local"
  671.  
  672. communication paths from "long-distance" paths that involve routes
  673.  
  674. through external trifled networks.
  675.  
  676.  
  677. At the same time, the source route field format places little constraint
  678.  
  679. on the format of the local transport addresses for any particular
  680.  
  681. subnetwork--only that there be an integral number of bytes whose number
  682.  
  683. is known by the gateway that moves the packet to the subnetwork.  This
  684.                                                                         
  685.                                    13
  686.  
  687.  
  688. flexibility means that paths can go almost anywhere:  in particular they
  689.  
  690. can transverse "outside" networks no matter what their addressing or
  691.  
  692. internal routing strategy, so long as at the far end of the outside
  693.  
  694. network is a gateway that understands how to continue the packet on its
  695.  
  696. journey.
  697.  
  698.  
  699. Separation of the mechanics of routing from the functions implemented by
  700.  
  701. a naming or addressing system has the advantage or clarifying some
  702.  
  703. frequent protocol design arguments that boil down to how much naming
  704.  
  705. function should be embedded in the lowest protocol layers.  For example,
  706.  
  707. it is usually proposed that an extra field, for use within the target
  708.  
  709. node, be carried along as a part of the internet address.  This field is
  710.  
  711. known as a "link" field in the ARPANET, the "channel" in X.25, and the
  712.  
  713. "socket" in ARPA's Internet for TCP and in the internet layer of the
  714.  
  715. Xerox PUP.  The argument develops over how big this field should
  716.  
  717. be--just large enough to distinguish among the activities or connections
  718.  
  719. a host carries on at one time, or generously large enough to distinguish
  720.  
  721. among all activities or connections the host will ever carry on. The
  722.  
  723. former choice takes the view that the field in question is merely the
  724.  
  725. last step in a route, the latter choice makes the socket number a unique
  726.  
  727. identifier, which is handling a naming function for the host, perhaps
  728.  
  729. allowing it to distinguish old connections from current ones.
  730.  
  731.  
  732. The source routing strategy finesses this argument in that it allows the
  733.  
  734. design of the packet format at the level of the internet transport layer
  735.  
  736. address to be frozen without forcing a decision about socket number
  737.  
  738. size.  As many bytes of route as the target host needs to distinguish
  739.  
  740. among its current connections can be included as part of the source
  741.                                                                         
  742.                                    14
  743.  
  744.  
  745. route and learned as part of the initial negotiation with the target
  746.  
  747. host using a well-known route to its negotiator.  A unique identifier
  748.  
  749. for a connection can be returned as part of that negotiation, and it can
  750.  
  751. be included in a connection identifier field of the next higher level of
  752.  
  753. protocol, to insure that packets arriving over a route are part of a
  754.  
  755. current connection.
  756.  
  757.  
  758. Gateway Simplicity and Network Maintenance
  759.  
  760.  
  761. With the source routing scheme just described, a gateway makes no
  762.  
  763. decisions (possibly it should check to insure that the route byte count
  764.  
  765. hasn't been exceeded) and it remembers nothing after the packet goes by.
  766.  
  767. This simplicity of operation and lack of memory means that one can in
  768.  
  769. principle implement such a gateway with a small amount of random logic
  770.  
  771. and a pair of packet buffers interconnecting two local network hardware
  772.  
  773. interfaces.  Such an implementation, since it does not involve a stored
  774.  
  775. program, has an exceptionally simple recovery strategy:  a hardware
  776.  
  777. reset to a standard starting state will always suffice.  In practice, at
  778.  
  779. least a microprocessor would probably be used to collect statistics and
  780.  
  781. respond to trouble diagnosis requests, but the basic principle that
  782.  
  783. recovery is trivial remains intact.
  784.  
  785.  
  786. There is one way in which a source-routing gateway is more complex than
  787.  
  788. its hop-by-hop counterpart.  Every packet that arrives may have a
  789.  
  790. different source route size and different next step offset, so a small
  791.  
  792. amount of lookup is needed to perform the forwarding operation.  A
  793.  
  794. related consequence is that higher-level protocols find that their
  795.  
  796. headers don't always start in the same position within the packet.
  797.                                                                         
  798.                                    15
  799.  
  800.  
  801. To create a gateway that can sustain a through transmission rate
  802.  
  803. comparable to that of the subnetworks involved requires careful
  804.  
  805. budgeting of the machine cycles involved.  For example, a bandwidth of 8
  806.  
  807. Mbits/sec. requires being able to pass 1000 1000-byte packets/second,
  808.  
  809. leaving a time budget of 1 ms. per packet.  If a 0.5 MIPS processor is
  810.  
  811. used for the gateway, there must be fewer than 500 instructions executed
  812.  
  813. for each packet, with the implication that whatever routing scheme is
  814.  
  815. used, it must be extremely simple.  The source routing approach makes
  816.  
  817. meeting this budget a realistic possibility.
  818.  
  819.  
  820. Maintenance is directly aided by having such a simple gateway mechanism.
  821.  
  822. With little to go wrong, failures should be relatively rare and
  823.  
  824. diagnosis and repair should be straightforward.  Even in the case where
  825.  
  826. a gateway is actually implemented by software in a node attached to two
  827.  
  828. local transport networks, the simplicity of action required of a gateway
  829.  
  830. are few, and that therefore the program is not only likely to be
  831.  
  832. trouble-free but also it is acceptable to embed it in the innermost part
  833.  
  834. of the supervisor, where it is less likely to fail because of
  835.  
  836. interference by other programs in the same node.  Perhaps even more
  837.  
  838. important in the case of a software gateway, the simplicity of the
  839.  
  840. source-routing approach means that the software required can be quick to
  841.  
  842. implement.
  843.  
  844.  
  845. Route Control
  846.  
  847.  
  848. One of the more interesting opportunities that arises when source
  849.  
  850. routing is used is that the node that is the source of a message can, if
  851.  
  852. appropriate, control precisely the route through the internet that
  853.                                                                         
  854.                                    16
  855.  
  856.  
  857. outgoing packets follow.  This control can be applied to solve several
  858.  
  859. problems, as follows:
  860.  
  861.  
  862. a)   Trouble location.  If trouble develops in a network gateway, it
  863.  
  864.      will be noticed first as failure of packets routed through that
  865.  
  866.      gateway to arrive at their destination.  Starting at any node that
  867.  
  868.      notices such a problem, one can route a test packet "out and back",
  869.  
  870.      through some set of gateways and back to the originating node.  A
  871.  
  872.      series of such tests, tracing successive steps in the route that
  873.  
  874.      failed, should quickly locate the troublesome gateway.  One can
  875.  
  876.      also imagine extending this idea to route a message into a target
  877.  
  878.      node and back out again, as a check on the operation of the lower
  879.  
  880.      levels of that node's operating system.  An interesting aspect of
  881.  
  882.      this approach to trouble location is that any user, if sufficiently
  883.  
  884.      desperate, can undertake network diagnosis; trouble location is not
  885.  
  886.      restricted to a network maintenance center that has some particular
  887.  
  888.      address or special hardware.
  889.  
  890.  
  891. b)   Policy implementation:  Some local networks may be paid for by a
  892.  
  893.      supporting organization that wants to have a say in their usage
  894.  
  895.      policy.  (For example, use of the ARPA network is supposed to be
  896.  
  897.      restricted to government-sponsored business.)  If such a network
  898.  
  899.      has gateways to two other networks, it could be used as an
  900.  
  901.      intermediate transport link on some packets flowing between those
  902.  
  903.      networks.  If source routing is used, the node that originates a
  904.  
  905.      packet can control whether the packet is routed through the network
  906.  
  907.      in question or, alternatively, avoids that network.  (Obviously,
  908.                                                                         
  909.                                    17
  910.  
  911.  
  912.      sophisticated help from routing servers is needed to actually
  913.  
  914.      implement such a policy, but the opportunity is there.)
  915.  
  916.  
  917. c)   Class-of-Service Implementation.  There are a variety of properties
  918.  
  919.      that an internet connection can have, and that may be different on
  920.  
  921.      different routes:  error rate, transport delay, probability of
  922.  
  923.      wiretapping, bandwidth.  Again, assuming considerable knowledge on
  924.  
  925.      the part of a routing server, with source routing one can choose a
  926.  
  927.      route that has class-of-service properties that are tailored to the
  928.  
  929.      application.
  930.  
  931.  
  932. d)   FIFO Streams.  Assuming that all gateways along a given route relay
  933.  
  934.      packets in the same order that they are received, if the same
  935.  
  936.      source route is used on several packets, those packets will arrive
  937.  
  938.      at their target in the same order that they left the source,
  939.  
  940.      eliminating any need for the target to restore order in what is
  941.  
  942.      intended to be a FIFO stream.  In a hop-by-hop dynamic routing
  943.  
  944.      system, FIFO delivery cannot be easily insured, so the source and
  945.  
  946.      target must work harder if that is the function they require.
  947.  
  948.  
  949. Finally, in an inter-network environment that includes both public and
  950.  
  951. private gateways, the precise route control provided by source routing
  952.  
  953. seems to be a key to effective use; private gateways can be used by
  954.  
  955. their owners while being ignored by everyone else; flaky gateways can be
  956.  
  957. bypassed by wary users no matter what administration is responsible for
  958.  
  959. them.
  960.                                                                         
  961.                                    18
  962.  
  963.  
  964. Other Observations
  965.  
  966.  
  967. There are a variety of other observations that one can make about source
  968.  
  969. routes.  These are, in no particular order:
  970.  
  971.  
  972. 1)   Source routing avoids several problems that can accompany more
  973.  
  974.      dynamic, highly optimal routing schemes.  There is no danger of
  975.  
  976.      packets circulating in a loop forever, so techniques such as hop
  977.  
  978.      counts are not needed.  There is little concern for startup
  979.  
  980.      transients, stability, or oscillation in the dynamics of route
  981.  
  982.      selection.  Extra traffic to exchange traffic statistics among
  983.  
  984.      gateways is not involved, and one does not have to worry about the
  985.  
  986.      interaction between the reliability of that traffic and the
  987.  
  988.      stability of the network.  There is no requirement that each
  989.  
  990.      gateway maintain a table that has a number of entries proportional
  991.  
  992.      to the size of the network.
  993.  
  994.  
  995. 2)   Development of network software for a new node can take an
  996.  
  997.      important shortcut by assembling hand-constructed routes at first.
  998.  
  999.      As long as the network topology does not change faster than the
  1000.  
  1001.      software gets debugged, this technique can be used to get a
  1002.  
  1003.      primitive connection operational without the need to program a
  1004.  
  1005.      routing server protocol.  For quick debugging of a new
  1006.  
  1007.      microprocessor this ease of programming the first network
  1008.  
  1009.      connection would be quite useful.
  1010.  
  1011.  
  1012. 3)   For certain very simple applications (e.g., trouble logging, of
  1013.  
  1014.      data collection) one could imagine leaving them permanently in
  1015.  
  1016.      place with a fixed, hand-selected route to their target. (Such an
  1017.                                                                         
  1018.                                    19
  1019.  
  1020.  
  1021.      approach would have to be weighed carefully against the disruption
  1022.  
  1023.      that a change in network topology might cause. The point is that
  1024.  
  1025.      this opportunity to exploit source routing for simple applications
  1026.  
  1027.      does exist.)
  1028.  
  1029.  
  1030. 4)   Source is consistent with at least two proposed
  1031.  
  1032.      fragmentation/reassembly strategies.  Fragmentation can be done by
  1033.  
  1034.      a gateway on entry to a subnetwork that has a small maximum packet
  1035.  
  1036.      reassembly can be accomplished either at the gateway leaving that
  1037.  
  1038.      subnetwork or by the target node.  Fragmentation can also be done
  1039.  
  1040.      by a fragmentation server, which might be a node whose address
  1041.  
  1042.      appears "in the middle" of a route unbeknownst to the source,
  1043.  
  1044.      target, or intervening gateways.  If it receives a packet that it
  1045.  
  1046.      believes is too large to get through some intermediate subnetwork,
  1047.  
  1048.      it can fragment that packet and also reroute the fragments through
  1049.  
  1050.      a reassembly server on the other side of the bottleneck.  Finally,
  1051.  
  1052.      one might successfully finesse fragmentation completely by sending
  1053.  
  1054.      big packets over a longer or less desirable route that allows big
  1055.  
  1056.      packets, while sending small ones the short, desirable way.
  1057.  
  1058.  
  1059. 5)   In a manner similar to the fragmentation/reassembly servers just
  1060.  
  1061.      described, one can place other specialized servers along a route to
  1062.  
  1063.      act as filters, translators, etc.  The idea has not been explored,
  1064.  
  1065.      but it seems to represent an interesting kind of opportunity.
  1066.  
  1067.  
  1068. 6)   Attachment of multi-tailed hosts (the "multi-homing problem") is
  1069.  
  1070.      simplified.  In a complex internet installation, one might expect
  1071.  
  1072.      to find some hosts that have attachments to two or more different
  1073.  
  1074.      subnetworks of the internet, perhaps for added reliability or for
  1075.                                                                         
  1076.                                    20
  1077.  
  1078.  
  1079.      assured bandwidth to services found on different subnetworks.  If
  1080.  
  1081.      the several attachment points are functionally equivalent, then
  1082.  
  1083.      when another node tries to send a message to such a host, there is
  1084.  
  1085.      a question of to which one of the several attachment points the
  1086.  
  1087.      message should go.  A hop-by-hop routing scheme in which gateways
  1088.  
  1089.      interpret internet names would require that either the different
  1090.  
  1091.      attachment points be assigned different internet names (so the
  1092.  
  1093.      originator has the burden of choosing which internet name to use)
  1094.  
  1095.      or else a single internet name is used for all the attachment
  1096.  
  1097.      points of the multi-tailed host and the gateways add this
  1098.  
  1099.      topological fact to their storehouse of routing knowledge and make
  1100.  
  1101.      the choice on the fly.  With source routing, the burden of choice
  1102.  
  1103.      can move to the routing server, where the topological information
  1104.  
  1105.      is available to choose a route from the originator to the nearest
  1106.  
  1107.      attachment point of the multi-tailed host.  Neither the originator
  1108.  
  1109.      nor the internet gateways need realize that the target has several
  1110.  
  1111.      attachment points.
  1112.  
  1113.  
  1114. In this last case, as in some others, one can argue that some of the
  1115.  
  1116. apparent simplifications or advantages obtained by using source routing
  1117.  
  1118. are actually one shifts of the underlying problem over to the routing
  1119.  
  1120. server.  This argument has some validity, but it overlooks two points:
  1121.  
  1122.  
  1123. 1)   Separation of two tangled problem areas, naming and routing, into
  1124.  
  1125.      two distinct and largely independent mechanisms simplifies and
  1126.  
  1127.      clarifies design, algorithms, and code.
  1128.  
  1129.  
  1130. 2)   When one implements routing ad a service supplied by a server, it
  1131.  
  1132.      becomes possible to introduce variations on the service by changing
  1133.                                                                         
  1134.                                    21
  1135.  
  1136.  
  1137.      just the server, or providing an alternate server. When the
  1138.  
  1139.      function of routing is distributed among the gateways, changes in
  1140.  
  1141.      the service require changing all of the gateways, an undertaking
  1142.  
  1143.      that is more difficult and hazardous.
  1144.  
  1145.  
  1146. Conclusions
  1147.  
  1148.  
  1149. The premise of this note is that source routing is particularly
  1150.  
  1151. well-suited to the campus environment.  The argument goes as follows: in
  1152.  
  1153. the campus environment, one can install high bandwidth lines at low
  1154.  
  1155. cost, since reliance on common-carrier offerings is not required and
  1156.  
  1157. physical facilities are under common control.  This high bandwidth
  1158.  
  1159. permits using strategies, such as source routing, that may waste some
  1160.  
  1161. part of the communications capacity by not being optimal.  The campus
  1162.  
  1163. administrative environment calls for diversity in protocol, for which
  1164.  
  1165. source routing caters by providing a lowest campus-wide transport
  1166.  
  1167. protocol with a minimum amount of predetermined function that might
  1168.  
  1169. constrain higher level protocol choices.  The campus administrative
  1170.  
  1171. environment also calls for diversity in administration, for which source
  1172.  
  1173. routing caters by permitting precise control of complete routes for
  1174.  
  1175. particular messages, and multiple strategies for resolving service names
  1176.  
  1177. or network addresses, as required.  It also permits messages to flow
  1178.  
  1179. through an internetwork arrangement despite some of its topology not
  1180.  
  1181. being centrally planned.  Source routing allows particularly easy
  1182.  
  1183. trouble location and source routing gateways are exceptionally simple,
  1184.  
  1185. two properties that are important when one assumes a central
  1186.  
  1187. administration that must be cost-conscious or even under-funded. Thus,
  1188.  
  1189. from these arguments one can conclude that, at least for the campus-wide
  1190.                                                                         
  1191.                                    22
  1192.  
  1193.  
  1194. internetwork case, source routing is an attractive scheme well worth
  1195.  
  1196. considering.
  1197.  
  1198.  
  1199. Acknowledgements
  1200.  
  1201.  
  1202. This note records a series of intensive discussions with David Reed,
  1203.  
  1204. David Clark, Kenneth Pogran, and Noel Chiappa.  It also borrows ideas
  1205.  
  1206. and terminology from working papers of the ARPA internet project by Dan
  1207.  
  1208. Cohen, Jon Postel, David Clark, and John Shoch and from working papers
  1209.  
  1210. of the M.I.T. AI Laboratory Chaosnet project by David Moon.  Welcome
  1211.  
  1212. comments on early drafts were made by Dan Cohen and John Shoch.
  1213.  
  1214.  
  1215. References
  1216.  
  1217.  
  1218. [1]  Farber, D.J., and Vittal, J.J., "Extendability Considerations in
  1219.  
  1220.      the Design of the Distributed Computer System (DCS)," Proc. Nat.
  1221.  
  1222.      Telecomm. Conf., (November, 1973), Atlanta, Georgia, pp. 15E-1 to
  1223.  
  1224.      15E-6.
  1225.  
  1226.  
  1227. [2]  Sunshine, Carl A., "Source Routing in Computer Networks," Computer
  1228.  
  1229.      Communication Review 1;, 7, (January, 1977) pp. 29-33.
  1230.  
  1231.